const express = require('express')//express框架
const { Op } = require('sequelize')//nodejs的sequelize模块
const order = require('../crud/table/myorder.js')//引入订单信息表
const customer = require('../crud/table/customer.js')//引入顾客信息表
const room = require('../crud/table/room.js')//引入房间信息表
const orderTracking = require('../crud/table/orderTracking.js')//引入订单跟踪信息表

orderTracking.hasOne(order,{ sourceKey:'orderNumber', foreignKey:'orderNumber'})
//每个订单跟踪表都有一个订单，一一对应
const orderTrackingRouter = express.Router()

orderTrackingRouter.post('/add',(req,res) =>{//添加订单跟踪信息
    const { orderNumber, orderTime, checkInTime, checkOutTime, remarks } = req.body;
    orderTracking.findOne({
        where:{
            orderNumber
        }
    })
    .then(data =>{
        if(data){
            res.status(200).json({
                success:false,
                msg:'该订单跟踪信息已经创建！'
            })
            return new Promise(() =>{})
        }else{
            return orderTracking.create({
                orderNumber, orderTime, checkInTime, checkOutTime, remarks
            })
        }
    })
    .then(data =>{
        res.status(200).json({
            success:false,
            msg:'服务器错误！'
        })
    })
})

orderTrackingRouter.delete('/del',(req,res) =>{//删除订单跟踪信息
    const { orderNumber } = req.body;
    orderTracking.findOne({
        where:{
            orderNumber
        }
    })
    .then(data =>{
        if(data){
            return orderTracking.destroy({
                where:{
                    orderNumber
                }
            })
        }else{
            res.status(200).json({
                success:false,
                msg:'该订单追踪信息表不存在！'
            })
            return new Promise(() =>{})
        }
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'该订单追踪信息删除成功!'
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部错误！'
        })
    })
})

orderTrackingRouter.put('/update',(req,res) =>{//修改订单追踪退房时间
    const { orderNumber, checkOutTime } = req.body;
    orderTracking.findOne({
        where:{
            orderNumber
        }
    })
    .then(data =>{
        if(data){
            return orderTracking.update({
                checkOutTime
            },{
                orderNumber
            })
        }else{
            res.status(200).json({
                success:false,
                msg:'此订单追踪信息不存在！'
            })
            return new Promise(() =>{})
        }
    })
    .then(data =>{
        return orderTracking.findOne({
            where:{
                orderNumber
            }
        })
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'修改成功！',
            orderTracking:data.get()
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'内部服务器出错！'
        })
    })
})

orderTrackingRouter.get('/getAllOrderTracking',(req,res) =>{//获取所有订单追踪信息
    const { pageSize, offset } = req.query;
    orderTracking.findAndCountAll({
        limit:pageSize,
        offset:offset
    })
    .then(data =>{
        res.status(200).json({
            pageSize:pageSize,
            offset:offset,
            orderTrackingList:data.rows.map(item =>{
                return item.get()
            }),
            count:data.count
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器颞部错误！'
        })
    })
})

module.exports = orderTrackingRouter;